package Arraylist;

import LinkList.ListNode;

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        ArrayListImplement arrayListImplement=new ArrayListImplement();
        test1(arrayListImplement);
        test2(arrayListImplement);
        test3();
    }
    public static void test1(Define arrayListImplement) {
        arrayListImplement.add(1);
        arrayListImplement.add(2);
        arrayListImplement.add(3);
        arrayListImplement.add(4);
        arrayListImplement.display();
        arrayListImplement.add(1,10);
        arrayListImplement.add(4,20);
        arrayListImplement.display();
        System.out.println(arrayListImplement.contains(10));
        System.out.println(arrayListImplement.size());
        System.out.println(arrayListImplement.indexOf(2));
    }

    public static void test2(Define arrayListImplement) {
        arrayListImplement.add(1);
        arrayListImplement.add(2);
        arrayListImplement.add(3);
        arrayListImplement.add(4);
        arrayListImplement.add(1,10);
        arrayListImplement.add(4,2);
        System.out.println(arrayListImplement.get(2));
        arrayListImplement.remove(2);
        arrayListImplement.display();
        arrayListImplement.clear();
        arrayListImplement.display();
        arrayListImplement.remove(150);
    }


    public static void test3() {
        ArrayList<Integer> arrayList=new ArrayList<>();
        arrayList.add(1);//在第一次add的时候，才会为ArrayList底层的elementData分配内存，大小为10,扩容是1.5倍
        arrayList.add(1,10);   //使用arraycopy把需要插入位置的所有数据移动到后面的空间中
        arrayList.add(5);
        arrayList.remove(0);   //这样是移除指定下标位置的元素
        arrayList.remove(new Integer(10));   //这样是为了删除指定得数字，因为形参的类型是Object
        arrayList.add(3);
        arrayList.add(6);
        arrayList.add(7);
        arrayList.add(8);
        System.out.println(arrayList);
        List<Integer> sub=arrayList.subList(1,3);  //【1,3）  截取顺序表指定下标并构成一个新的顺序表 sub和arraylist共用一个顺序表，*会一起改变某位置的值
        System.out.println(sub);
        sub.set(0,100);
        System.out.println(sub);
        for (Integer x:arrayList) {
            System.out.print(x+" ");
        }
        System.out.println();
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.print(arrayList.get(i)+" ");
        }
    }
}
